﻿using System;
using System.Security.Cryptography;
using System.Text;

namespace MediaBrowserSL.Web.Tools
{
    public static class KeysMD5
    {
        #region Méthodes
        public static string GetPass()
        {
            return KeysMD5.GetPass(8);
        }

        public static string HashWithMD5(string stringToHash)
        {
            MD5 md5HashAlgo = MD5.Create();

            // Place le texte à hacher dans un tableau d'octets 
            byte[] byteArrayToHash = Encoding.UTF8.GetBytes(stringToHash);

            // Hash le texte et place le résulat dans un tableau d'octets 
            byte[] hashResult = md5HashAlgo.ComputeHash(byteArrayToHash);

            StringBuilder result = new StringBuilder();

            for (int i = 0; i < hashResult.Length; i++)
            {
                // Affiche le Hash en hexadecimal 
                result.Append(hashResult[i].ToString("X2"));
            }

            return result.ToString();
        }

        public static string GetPass(int aNombreCaracteres)
        {
            string sMotDePasse = string.Empty;
            Guid oGuid;

            oGuid = Guid.NewGuid();

            if (aNombreCaracteres >= oGuid.ToString().Length)
            {
                sMotDePasse = oGuid.ToString();
            }
            else
            {
                sMotDePasse = oGuid.ToString().Substring(0, aNombreCaracteres);
            }

            return sMotDePasse;
        }
        #endregion
    }
}